package com.zpark.oop.day06;

/**
 * abstract关键字修饰的类，称为抽象类
 * 抽象类可以拥有成员变量和成员方法
 * 抽象类不能实例化，其余功能与普通类一致
 * 如果想要使用抽象类当中的属性和方法，则必须通过继承方式继承抽象类，由子类进行实例化
 */
public abstract class Demo02 {
    // 定义成员变量
    String name;
    int age;

    // 定义静态变量（类变量）
    static String sex;

    public void eat(){
        System.out.println("成员方法eat");
    }

    /**
     * 抽象方法：
     *      abstract 修饰的方法，语法如下：
     *          [修饰符] abstract 返回值类型 方法名([参数列表]);
     *      抽象方法没有方法体，连{}也没有
     *      注意：抽象方法不能声明为private、final、static
     *      抽象方法必须要被正常的子类重写
     * 抽象方法与抽象类的关系：
     *      如果一个类存在抽象方法，则该类一定是抽象类
     *      如果一个类是抽象类，则该类一定不一定存在抽象方法
     */
    public abstract void sleep();

    public static void run(){
        System.out.println("静态方法run");
    }
}
